﻿using MongoDB.Bson;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FlexFlow.Model
{
    /// <summary>
    /// 表示物理模型基类，物理模型为可以加入数据库的类，具有GUID格式的唯一标识符（Identity）
    /// </summary>
    public abstract class PhysicalModel
    {
        /// <summary>
        /// MongoDB中的数据id
        /// </summary>
        public ObjectId _id { get; set; }
        /// <summary>
        /// 该物理模型的唯一标识符，用来在数据库中唯一区分当前模型的实例
        /// </summary>
        public Guid Identity { get; set; }
        /// <summary>
        /// 表示当前模型是否已被锁定。锁定后的模型将不允许被操作
        /// </summary>
        public bool Locked { get; set; }
        /// <summary>
        /// 表示当前物理模型的备注信息
        /// </summary>
        public Object Tag { get; set; }
        /// <summary>
        /// 在内存中创建一个物理模型实例，并且初始化唯一标识符
        /// </summary>
        public PhysicalModel()
        {
            this.Identity = Guid.NewGuid();
        }
    }
}
